Image Builderでストレージのサイズ変更&暗号化を行う方法
Image BuilderでAMIを作成するために起動される作業用インスタンスにアタッチされるEBSは、デフォルトでは容量8GBで暗号化なしの状態となっています。
しかし、レシピに含まれるコンポーネントの内容次第では、8GBでは足りないことがあるかもしれません。 また、運用ルールの都合上スナップショットの暗号化をする必要があるかもしれません。
これらの設定は現時点(2019/12/20)ではマネジメントコンソール上から指定することはできず、AWS CLIを利用する必要があります。 この記事では、その方法を紹介したいと思います。
手順
作業用インスタンスの設定はレシピに含まれます。そのため、レシピの作成をAWS CLIを利用して行うことになります。 その他はマネジメントコンソールから作業することができます。
下準備
カスタムコンポーネントを利用する必要がある場合、事前に作成します。これはマネジメントコンソールからの作成で大丈夫です。
EBS暗号化用のキーを用意します。デフォルトのキーを利用しても問題ありません。この記事ではデフォルトのキーを利用して説明しています。
Image Builderのレシピを作成する
awscliを利用して、以下のコマンドを実行します。今回は以下の設定をしてみました。
- EBSを暗号化しボリュームサイズを8→16GBに拡張。
- ビルドコンポーネントに
Amazon Corretto 8 JRE
とPython 3
を指定。 - テストに
simple boot test
を指定。
aws imagebuilder create-image-recipe \ --name ebs-snapshot-encryption-and-enlarge-storage-size \ --semantic-version 0.0.1 \ --parent-image "arn:aws:imagebuilder:ap-northeast-1:aws:image/amazon-linux-2-x86/2019.11.21" \ --block-device-mappings='[{"deviceName": "/dev/xvda","ebs":{"encrypted":true,"kmsKeyId":"alias/aws/ebs","volumeSize":16,"volumeType":"gp2"}}]' \ --components '[{"componentArn":"arn:aws:imagebuilder:ap-northeast-1:aws:component/python-3-linux/1.0.0"},{"componentArn":"arn:aws:imagebuilder:ap-northeast-1:aws:component/amazon-corretto-8-jre/1.0.0"},{"componentArn": "arn:aws:imagebuilder:ap-northeast-1:aws:component/simple-boot-test-linux/1.0.0"}]'
[ { "deviceName": "/dev/xvda", "ebs": { "encrypted": true, "kmsKeyId": "alias/aws/ebs", "volumeSize": 16, "volumeType": "gp2" } } ]
[ { "componentArn": "arn:aws:imagebuilder:ap-northeast-1:aws:component/python-3-linux/1.0.0" }, { "componentArn": "arn:aws:imagebuilder:ap-northeast-1:aws:component/amazon-corretto-8-jre/1.0.0" }, { "componentArn": "arn:aws:imagebuilder:ap-northeast-1:aws:component/simple-boot-test-linux/1.0.0" } ]
スナップショットの暗号化をしたい場合、--block-device-mappings
オプションを利用する必要があります。
encrypted
にtrue
を指定し、kmsKeyId
に暗号化に利用するキーのKMS Key IDを指定します。
上記の場合、デフォルトの暗号化キーが設定されています。
EBSの容量を変更したい場合、volumeSize
にEBSボリュームサイズを指定します。
余談ですが、マネジメントコンソール上では「Build components」「Tests」の2つに分かれていますが、CLIの場合--components
オプションにまとめて指定します。
その他のオプションについては、公式ドキュメントを確認してください。
コマンド実行に成功すると、マネジメントコンソールからレシピを確認することができます。
AMIの作成
上記で作成したレシピをもとにパイプラインを作成します。パイプラインはマネジメントコンソールから作成して大丈夫です。 パイプラインが作成できたら、実行してみましょう。
作成されたAMIのスナップショットの情報はこちら。
暗号化され、容量が16GiBになっていることが確認できました。